(:-export get_mtindexrule / 3).
(:-dynamic get_mtindexrule / 3).
(get_mtindexrule(_h2223,_h2237,_h2251) :- concat_atom([mtindex_,_h2237],_h2305)  ','  new_pred(_h2223,_h2305,_h2355)  ','  _h2223 =.. [_h2389|_h2398]  ','  rearrange_args_list(_h2237,_h2398,_h2448)  ','  rearrange_argnums_list(_h2237,_h2486)  ','  get_mtindexrule_bodies(_h2355,_h2486,_h2448,_h2548)  ','  _h2251 = (_h2355 :- _h2548)).
(new_predname(_h2223,_h2237,_h2251,_h2265) :- pred_name_args_arity(_h2223,_h2303,_h2317,_h2326)  ','  concat_atom([_h2303,'_',_h2326,'_',_h2237,'_',_h2251],_h2265)).
(new_pred(_h2223,_h2237,_h2251) :- pred_name_args_arity(_h2223,_h2289,_h2303,_h2317)  ','  concat_atom([_h2289,'_',_h2317,'_',_h2237],_h2403)  ','  _h2251 =.. [_h2403|_h2303]).
(pred_name_args_arity(_h2223,_h2237,_h2251,_h2265) :- _h2223 =.. [_h2237|_h2251]  ','  functor(_h2223,_h2347,_h2265)).
(rearrange_args_list(_h2223,_h2237,_h2251) :- combine_argnums_list(_h2277,_h2223)  ','  get_args_by_number(_h2277,_h2237,_h2251)).
(:-dynamic get_args_by_number / 3).
(:-export get_args_by_number / 3).
get_args_by_number([],_h2235,[]).
(get_args_by_number(_h2223,_h2237,_h2251) :- _h2223 = [_h2285|_h2299]  ','  get_args_by_number(_h2299,_h2237,_h2349)  ','  nth1(_h2285,_h2237,_h2399)  ','  _h2251 = [_h2399|_h2349]).
(:-export combine_argnums_list / 2).
combine_argnums_list([],[]).
(combine_argnums_list(_h2223,_h2237) :- append_all(_h2237,_h2275)  ','  remove_dups(_h2275,_h2223)).
append_all([],[]).
(append_all([_h2227|_h2241],_h2259) :- append_all(_h2241,_h2297)  ','  append(_h2227,_h2297,_h2259)).
remove_dups([],[]).
(remove_dups([_h2227|_h2241],_h2259) :- member(_h2227,_h2241)  ','  remove_dups(_h2241,_h2259)).
(remove_dups([_h2227|_h2241],[_h2227|_h2275]) :- not member(_h2227,_h2241)  ','  remove_dups(_h2241,_h2275)).
(rearrange_argnums_list(_h2223,_h2237) :- combine_argnums_list(_h2263,_h2223)  ','  rearrange_argnums_list_runner(_h2223,_h2263,_h2237)).
rearrange_argnums_list_runner([],_h2235,[]).
(rearrange_argnums_list_runner(_h2223,_h2237,[_h2255|_h2269]) :- _h2223 = [_h2307|_h2321]  ','  rearrange_argnums(_h2307,_h2237,_h2255)  ','  rearrange_argnums_list_runner(_h2321,_h2237,_h2269)).
(:-dynamic rearrange_argnums / 3).
(:-export rearrange_argnums / 3).
rearrange_argnums([],_h2235,[]).
(rearrange_argnums(_h2223,_h2237,_h2251) :- _h2223 = [_h2285|_h2299]  ','  get_element_index(_h2285,_h2237,_h2349)  ','  rearrange_argnums(_h2299,_h2237,_h2399)  ','  _h2251 = [_h2349|_h2399]).
(:-export get_mtindexrule_bodies / 4).
get_mtindexrule_bodies(_h2223,[],_h2244,[]).
(get_mtindexrule_bodies(_h2223,_h2237,_h2251,_h2265) :- _h2237 = [_h2299|_h2313]  ','  get_indexrule_head(_h2223,_h2299,_h2251,_h2375)  ','  get_nonvar_check(_h2299,_h2251,_h2425)  ','  _h2443 = (_h2425 -> _h2375)  ','  get_mtindexrule_bodies(_h2223,_h2313,_h2251,_h2533)  ','  (_h2533 = [] -> _h2265 = _h2443  ';'  _h2265 = (_h2443  ';'  _h2533))).
(get_indexrules(_h2223,_h2237,_h2251,_h2265,_h2279) :- _h2223 =.. [_h2313|_h2322]  ','  rearrange_args_list(_h2237,_h2322,_h2372)  ','  rearrange_argnums_list(_h2237,_h2410)  ','  get_indexrules(_h2223,_h2410,_h2251,_h2372,_h2265,_h2279)).
get_indexrules(_h2223,[],_h2244,_h2253,[],[]).
(get_indexrules(_h2223,_h2237,_h2251,_h2265,_h2279,_h2293) :- _h2237 = [_h2327|_h2341]  ','  get_an_indexrule(_h2223,_h2327,_h2251,_h2265,_h2419,_h2437)  ','  get_indexrules(_h2223,_h2341,_h2251,_h2265,_h2511,_h2525)  ','  append([_h2419],_h2511,_h2279)  ','  append([_h2437],_h2525,_h2293)).
(get_an_indexrule(_h2223,_h2237,_h2251,_h2265,_h2279,_h2293) :- get_indexrule_head(_h2223,_h2237,_h2265,_h2293)  ','  get_indexrule_body(_h2237,_h2251,_h2265,_h2415)  ','  _h2279 = (_h2293 :- _h2415)).
(:-dynamic get_indexrule_head / 4).
(:-export get_indexrule_head / 4).
(get_indexrule_head(_h2223,_h2237,_h2251,_h2265) :- get_idxargs_normargs(0,_h2237,_h2251,_h2323,_h2337)  ','  new_predname(_h2223,index,_h2237,_h2395)  ','  append(_h2323,_h2337,_h2445)  ','  _h2265 =.. [_h2395|_h2445]).
(:-dynamic get_idxargs_normargs / 5).
(:-export get_idxargs_normargs / 5).
(get_idxargs_normargs(_h2223,_h2232,[],[],[]) :- !).
(get_idxargs_normargs(_h2223,_h2237,_h2251,_h2265,_h2279) :- [_h2301|_h2315] = _h2251  ','  _h2345  is  _h2223 + 1  ','  !  ','  (nth0(_h2399,_h2237,_h2345) -> get_idxargs_normargs(_h2345,_h2237,_h2315,_h2480,_h2279)  ','  append([_h2301],_h2480,_h2265)  ';'  get_idxargs_normargs(_h2345,_h2237,_h2315,_h2265,_h2622)  ','  append([_h2301],_h2622,_h2279))).
(:-export get_indexrule_head_name / 3).
(:-dynamic get_indexrule_head_name / 3).
(get_indexrule_head_name(_h2223,_h2237,_h2251) :- concat_atom([_h2223,'_index_',_h2237],_h2251)).
(:-dynamic get_nonvar_check / 3).
(:-export get_nonvar_check / 3).
(get_nonvar_check(_h2223,_h2237,_h2251) :- _h2223 = [_h2285|_h2299]  ','  get_nth_element(_h2237,_h2285,_h2344)  ','  _h2251 = nonvar(_h2344)).
(:-dynamic get_indexrule_body / 4).
(:-export get_indexrule_body / 4).
(get_indexrule_body(_h2223,_h2237,_h2251,_h2265) :- get_indexrule_newvars(0,_h2223,_h2251,_h2323)  ','  _h2341 =.. [_h2237|_h2323]  ','  get_indexrule_assign_to_newvar(0,_h2223,_h2251,_h2323,_h2439)  ','  _h2457 = (_h2341  ','  _h2439)  ','  _h2265 = _h2457).
(get_indexrule_newvars(_h2223,_h2232,[],[]) :- !).
(get_indexrule_newvars(_h2223,_h2237,_h2251,_h2265) :- [_h2287|_h2301] = _h2251  ','  _h2331  is  _h2223 + 1  ','  !  ','  (nth0(_h2385,_h2237,_h2331) -> get_indexrule_newvars(_h2331,_h2237,_h2301,_h2466)  ','  append([_h2287],_h2466,_h2265)  ';'  get_indexrule_newvars(_h2331,_h2237,_h2301,_h2466)  ','  append([_h2612],_h2466,_h2265))).
(get_indexrule_assign_to_newvar(_h2223,_h2237,_h2251,_h2265,_h2279) :- _h2251 = [_h2313|_h2327]  ','  _h2265 = [_h2361|_h2375]  ','  _h2393  is  _h2223 + 1  ','  !  ','  (_h2327 = [] -> _h2279 = (_h2361 = _h2313)  ';'  nth0(_h2519,_h2237,_h2393) -> get_indexrule_assign_to_newvar(_h2393,_h2237,_h2327,_h2375,_h2612)  ','  _h2279 = _h2612  ';'  get_indexrule_assign_to_newvar(_h2393,_h2237,_h2327,_h2375,_h2612)  ','  _h2279 = (_h2361 = _h2313  ','  _h2612))).
get_table([],[]).
(get_table(_h2223,_h2237) :- _h2223 = [_h2271|_h2285]  ','  functor(_h2271,_h2323,_h2332)  ','  _h2271 =.. [_h2366|_h2380]  ','  get_table(_h2285,_h2413)  ','  _h2431 = [(:-table _h2366 / _h2332  as  subsumptive)|_h2413]).
(:-dynamic get_newbase / 3  ','  get_newbase / 4  ','  get_newbasename / 3).
(:-export get_newbase / 3  ','  get_newbase / 4  ','  get_newbasename / 3).
(get_newbase(_h2223,_h2237,_h2251) :- _h2223 =.. [_h2285|_h2299]  ','  functor(_h2223,_h2337,_h2346)  ','  (\+'_$_$_mtindex'(_h2380,_h2346,_h2406,_h2420,_h2434) -> get_newbasename(_h2460,_h2237,_h2406))  ','  get_newbase(_h2406,_h2299,_h2237,_h2251)).
(get_newbase(_h2223,_h2237,_h2251,_h2265) :- rearrange_args_list(_h2251,_h2237,_h2315)  ','  _h2265 =.. [_h2223|_h2315]).
(get_newbasename(_h2223,_h2237,_h2251) :- functor(_h2223,_h2289,_h2303)  ','  concat_atom([_h2289,'_',_h2303,'_newbase_',_h2237],_h2251)).
